package com.xiaoyu.string;

/**
 * @program: DS_and_A
 * @description:
 * 给你两个字符串haystack 和 needle ，
 * 请你在 haystack 字符串中找出 needle 字符串出现的第一个位置（下标从 0 开始）。
 * 如果不存在，则返回 -1 。
 *
 * 输入：haystack = "hello", needle = "ll"
 * 输出：2
 *
 * 输入：haystack = "aaaaa", needle = "bba"
 * 输出：-1
 *
 * @author: YuWenYi
 * @create: 2021-04-25 16:24
 **/

public class StrStr {
    //就是haystack.indexOf(needle)的实现!   下面是我自己写的暴力匹配法!
    public static int strStr(String haystack, String needle) {
        if ("".equals(needle) || needle.length()==0)
            return 0;

        for (int i = 0; i < haystack.length(); i++) {
            for (int j = 0; j < needle.length(); j++) {
                if (needle.charAt(j) != haystack.charAt(i)){
                    i = i - j;   //如果没匹配成功,就回溯到最开始的地方,然后再+1进行下一个匹配
                    break;
                }else {
                    //如果满足这个条件,说明needle已经完全匹配了,返回相应的值i-(needle.length()-1),因为下面i++了这么多次
                    if (j == needle.length()-1)
                        return i+1-needle.length();
                    if (i == haystack.length()-1)  //如果满足这个条件,说明haystack到头了,那肯定就不在这个字符串里了
                        return -1;
                    i++;
                }
            }
        }
        return -1;
        //return haystack.indexOf(needle);
    }

    public static void main(String[] args) {

        String haystack = "mississippi", needle = "issip";
        int i = strStr(haystack, needle);
        System.out.println("位置-->"+i);
    }

}
